﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Security.Principal;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using App_Negocio;


public partial class InsumosNecesarios : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            IPrincipal p = HttpContext.Current.User;
            if (!p.IsInRole("Empleado"))
            {
                Session["Mensaje"] = "Usted no posee los permisos necesarios para ingresar a esta página";

                if (Session["Identificador"] != null)
                {
                    Session["IrAPagina"] = "Principal_Clientes.aspx";
                    Response.Redirect("Bienvenida.aspx");
                }
                else
                {
                    Response.Redirect("login.aspx");
                }
            }
            else
            {
                actualizarGrilla();
            }
        }
    }

    protected void ddlIntervalo_SelectedIndexChanged(object sender, EventArgs e)
    {
        actualizarGrilla();
    }

    private void actualizarGrilla()
    {
        DateTime hasta = new DateTime();

        hasta = System.DateTime.Now;
        if (int.Parse(ddlIntervalo.SelectedValue) < 20)
        {
            hasta = hasta.AddDays(int.Parse(ddlIntervalo.SelectedValue));//
        }
        else
        {
           hasta =  hasta.AddMonths(1);
        }
        App_Negocio.Insumo insumo = new App_Negocio.Insumo();
        List<DetallesGUI> lista = new List<DetallesGUI>();
        lista = listarInsumosLista(hasta);

        Session["dvInsumo"] = lista;
        gvInsumo.DataSource = lista;
        gvInsumo.DataBind();
    }
    
    private List<DetallesGUI> listarInsumosLista(DateTime hasta)
    {
        List<DetallesGUI> lista = new List<DetallesGUI>();
        DataTable dataTable = App_Negocio.Insumo.listarInsumosTabla(hasta);
        App_Negocio.Insumo insumo = new App_Negocio.Insumo();
        DetallesGUI gui = null;
        foreach (DataRow dr in dataTable.Rows)
        {
            insumo = new App_Negocio.Insumo();
            insumo.Id = int.Parse(dr["Id"].ToString());
            insumo.Nombre = dr["Nombre"].ToString();
            insumo.Cantidad = float.Parse(dr["Stock"].ToString());
            insumo.Unidad_Medida = new Unidad_Medida();
            insumo.Unidad_Medida.Nombre = dr["Unidad"].ToString();

            gui = new DetallesGUI(insumo, float.Parse(dr["Necesaria"].ToString()));
            lista.Add(gui);
        }

        return lista;
    }

    private class DetallesGUI
    {
        private string unidad;

        public string Unidad
        {
            get { return unidad; }
            set { unidad = value; }
        }

        private App_Negocio.Insumo ins;

        public App_Negocio.Insumo Ins
        {
            get { return ins; }
            set { ins = value; }
        }
        private float necesidad;

        public float Necesidad
        {
            get { return necesidad; }
            set { necesidad = value; }
        }
        private float pedido;

        public float Pedido
        {
            get { return pedido; }
            set { pedido = value; }
        }

        private float cantidad;

        public float Cantidad
        {
            get { return cantidad; }
            set { cantidad = value; }
        }
        private string nombre;

        public string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }
                
        public DetallesGUI(App_Negocio.Insumo fuente, float necesidad)
        {
            this.Ins = new App_Negocio.Insumo();
            this.ins.Id = fuente.Id;
            this.cantidad = fuente.Cantidad;
            this.nombre = fuente.Nombre;
            this.Pedido = necesidad - fuente.Cantidad;
            this.necesidad = necesidad;
            this.unidad = fuente.Unidad_Medida.Nombre;
        }

    }

    protected void btnEnviar_Click(object sender, EventArgs e)
    {
        List<DetallesGUI> listaInsumos = (List<DetallesGUI>)Session["dvInsumo"];
        App_Negocio.Pedido pedido = new App_Negocio.Pedido();

        pedido.PedidoList = new List<Pedido_Detalle>();
        pedido.Fecha = System.DateTime.Now;


        foreach (DetallesGUI lIns in listaInsumos)
        {
            App_Negocio.Pedido_Detalle pDet = new App_Negocio.Pedido_Detalle();
            pDet.Cantidad = lIns.Necesidad;
            pDet.Insumo = new App_Negocio.Insumo();
            pDet.Insumo.Id = lIns.Ins.Id;

            pedido.PedidoList.Add(pDet);

        }

        pedido.guardarPedido();
        Response.Redirect("Principal_Empleados.aspx");

    }
}
